home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
asm
/
amislib.exe
/
AMIS.MAC
< prev
next >
Wrap
Text File
|
1992-09-12
|
34KB
|
1,354 lines
.XLIST
;-----------------------------------------------------------------------
; Alternate Multiplex Interrupt Specification Library
; AMIS.MAC Public Domain 1992 Ralf Brown
; You may do with this software whatever you want, but
; common courtesy dictates that you not remove my name
; from it.
;
; Version 0.90
; LastEdit: 9/12/92
;-----------------------------------------------------------------------
AMIS_VERSION equ 350 ;(version 3.5 of the Alternate Multiplex Interrupt Spec)
AMISLIB_VERSION equ 090 ;(version 0.90 of this library)
;-----------------------------------------------------------------------
; Return codes for various API calls
;
; general, applies to all standard calls
AMIS_NOTIMPLEMENTED equ 0
AMIS_SUCCESSFUL equ 0FFh
; additional return codes for Uninstall (function 02h)
AMIS_UNINST_FAILED equ 1
AMIS_UNINST_WILL_DO equ 2
AMIS_UNINST_SAFE_ON equ 3
AMIS_UNINST_SAFE_OFF equ 4
AMIS_UNINST_TRYLATER equ 5
; additional return codes for Popup (function 03h)
AMIS_POPUP_TRYLATER equ 1
AMIS_POPUP_WILLDO equ 2
AMIS_POPUP_BUSY equ 3
AMIS_POPUP_NEEDHELP equ 4
; additional return codes for Check Interrupt Chained (function 04h)
AMIS_CHAIN_DONTKNOW equ 1
AMIS_CHAIN_HOOKED equ 2
AMIS_CHAIN_HOOKED_ADDR equ 3
AMIS_CHAIN_HOOKLIST equ 4
AMIS_CHAIN_NOTUSED equ 0FFh
; hotkey type bits returned by Get Hotkeys (function 05h)
HK_INT09ENTRY equ 1 ; TSR checks keys before calling orig INT 09h
HK_INT09EXIT equ 2 ; TSR checks keys after calling orig INT 09h
HK_INT15ENTRY equ 4 ; TSR checks keys before chaining INT 15h/AH=4Fh
HK_INT15EXIT equ 8 ; TSR checks keys after chaining INT 15h/AH=4Fh
HK_INT16OLD equ 10h ; TSR checks on INT 16/AH=00h-02h
HK_INT16NEW equ 20h ; TSR checks on INT 16/AH=10h-12h
; hotkey shift bits returned by Get Hotkeys (function 05h)
HK_NONE equ 0000h ; no shift keys
HK_RSHIFT equ 0001h ; right shift key
HK_LSHIFT equ 0002h ; left shift key
HK_BOTHSHIFT equ 0003h ; both Shift keys must be pressed
HK_ANYCTRL equ 0004h ; either Control key must be pressed
HK_ANYALT equ 0008h ; either Alt key must be pressed
HK_SCRLLOCK_ON equ 0010h ; ScrollLock must be on when hotkey pressed
HK_NUMLOCK_ON equ 0020h ; NumLock must be on when hotkey pressed
HK_CAPSLOCK_ON equ 0040h ; CapsLock must be on when hotkey pressed
HK_ANYSHIFT equ 0080h ; either Shift key must be pressed
HK_LCTRL equ 0100h ; left control key
HK_LALT equ 0200h ; left Alt key
HK_RCTRL equ 0400h ; right control key
HK_RALT equ 0800h ; right Alt key
HK_BOTHCTRL equ 0500h ; both Control keys must be pressed
HK_BOTHALT equ 0A00h ; both Alt keys must be pressed
HK_SCROLLOCK equ 1000h ; ScrollLock must be pressed with hotkey
HK_NUMLOCK equ 2000h ; NumLock must be pressed with hotkey
HK_CAPSLOCK equ 4000h ; CapsLock must be pressed with hotkey
HK_SYSREQ equ 8000h ; SysRq must be pressed with hotkey
; hotkey flag bits returned by Get Hotkeys (function 05h)
HK_CHAINBEFORE equ 1 ; TSR chains hotkey before processing it
HK_CHAINAFTER equ 2 ; TSR chains hotkey after processing it
HK_MONITOR equ 4 ; other TSRs should pass through this hotkey
; so that it can be monitored
HK_NOPRESSRELEASE equ 8 ; hotkey won't activate if other keys pressed
; and released before hotkey combination
; completed
HK_REMAPPED equ 10h ; this key is remapped into some other key
HK_NOCHAIN equ 0 ; TSR swallows hotkey
; hotkey scan codes returned by Get Hotkeys (function 05h)
SCAN_NONE equ 0
SCAN_ESC equ 1
SCAN_1 equ 2
SCAN_2 equ 3
SCAN_3 equ 4
SCAN_4 equ 5
SCAN_5 equ 6
SCAN_6 equ 7
SCAN_7 equ 8
SCAN_8 equ 9
SCAN_9 equ 10
SCAN_0 equ 11
SCAN_HYPHEN equ 12
SCAN_EQUAL equ 13
SCAN_BACKSP equ 14
SCAN_TAB equ 15
SCAN_Q equ 16
SCAN_W equ 17
SCAN_E equ 18
SCAN_R equ 19
SCAN_T equ 20
SCAN_Y equ 21
SCAN_U equ 22
SCAN_I equ 23
SCAN_O equ 24
SCAN_P equ 25
SCAN_LBRACKET equ 26
SCAN_RBRACKET equ 27
SCAN_ENTER equ 28
SCAN_CTRL equ 29
SCAN_A equ 30
SCAN_S equ 31
SCAN_D equ 32
SCAN_F equ 33
SCAN_G equ 34
SCAN_H equ 35
SCAN_J equ 36
SCAN_K equ 37
SCAN_L equ 38
SCAN_SEMICOLON equ 39
SCAN_SQUOTE equ 40
SCAN_BACKQUOTE equ 41
SCAN_LSHIFT equ 42
SCAN_BACKSLASH equ 43
SCAN_Z equ 44
SCAN_X equ 45
SCAN_C equ 46
SCAN_V equ 47
SCAN_B equ 48
SCAN_N equ 49
SCAN_M equ 50
SCAN_COMMA equ 51
SCAN_PERIOD equ 52
SCAN_SLASH equ 53
SCAN_RSHIFT equ 54
SCAN_GREYSTAR equ 55
SCAN_ALT equ 56
SCAN_SPACE equ 57
SCAN_CAPSLK equ 58
SCAN_F1 equ 59
SCAN_F2 equ 60
SCAN_F3 equ 61
SCAN_F4 equ 62
SCAN_F5 equ 63
SCAN_F6 equ 64
SCAN_F7 equ 65
SCAN_F8 equ 66
SCAN_F9 equ 67
SCAN_F10 equ 68
SCAN_NUMLK equ 69
SCAN_SCRLLK equ 70
SCAN_HOME equ 71
SCAN_UP equ 72
SCAN_PGUP equ 73
SCAN_GREYMINUS equ 74
SCAN_LEFT equ 75
SCAN_KP5 equ 76
SCAN_RIGHT equ 77
SCAN_GREYPLUS equ 78
SCAN_END equ 79
SCAN_DOWN equ 80
SCAN_PGDN equ 81
SCAN_INS equ 82
SCAN_DEL equ 83
SCAN_SYSRQ equ 84
SCAN_F11 equ 87
SCAN_F12 equ 88
HK_ONRELEASE equ 80h ; hotkey activates on key release (add to scan code)
;-----------------------------------------------------------------------
; Return codes for AMISLIB functions
;
; bit flags returned by CHECK_IF_HOTKEYS_USED
HC_EXACT equ 1 ; exact match found
HC_SUPERSET equ 2 ; some key whose shift states include ours used
HC_SUBSET equ 4 ; some key whose shift states included by one of ours used
HC_OVERLAP equ 8 ; hotkey overlap found
HC_MONITOR equ 80h ; other TSRs monitor one or more hotkeys, but no
; actual conflict because caller chains them
HC_IS_CONFLICT equ 7Fh ; mask for testing whether conflict exists
;-----------------------------------------------------------------------
;
; Set up a shorthand for the segment containing all the resident code and
; data.
; Note: the alignment must be PARA for the code to be properly relocatable
; in small-code memory models.
;
TSRcode@ MACRO
TGROUP GROUP RESIDENT_CODE
RESIDENT_CODE SEGMENT PUBLIC PARA 'TSRCODE'
ASSUME DS:NOTHING,ES:NOTHING,SS:NOTHING
ASSUME CS:TGROUP
ENDM
TSRcodeEnd@ MACRO
RESIDENT_CODE ENDS
ENDM
;-----------------------------------------------------------------------
;
; Set up shorthands for the segments containing all the resident data,
; initialized and uninitialized.
;
TSRdata@ MACRO
RESIDENT_DATA SEGMENT PUBLIC BYTE 'TSRCODE'
ENDM
TSRdataEnd@ MACRO
RESIDENT_DATA ENDS
ENDM
TSRbss@ MACRO
RESIDENT_BSS SEGMENT PUBLIC BYTE 'TSRCODE'
ENDM
TSRbssEnd@ MACRO
RESIDENT_BSS ENDS
ENDM
;-----------------------------------------------------------------------
;
; dummy segment for determining the size of the resident code in the
; executable
;
TSRlast@ MACRO
RESIDENT_END SEGMENT PUBLIC BYTE 'TSRCODE'
ENDM
TSRlastEnd@ MACRO
RESIDENT_END ENDS
ENDM
;-----------------------------------------------------------------------
;
; Set up a shorthand for declaring all three resident segments and a group
; TGROUP for those segments.
;
TSRgroup@ MACRO
TSRcode@
TSRcodeEnd@
TSRdata@
TSRdataEnd@
TSRbss@
TSRbssEnd@
TSRlast@
TSRlastEnd@
TGROUP GROUP RESIDENT_CODE,RESIDENT_DATA,RESIDENT_BSS,RESIDENT_END
ENDM
;-----------------------------------------------------------------------
;
; Some of the code in ALTMPX.ASM uses conditional assembly to handle
; segment registers differently in Tiny model than in other models, so
; we need to ensure that __TINY__ is defined in tiny model.
;
IFDEF @Model ; simplified memory models being used?
IF @Model eq 1 ; tiny model
IFNDEF __TINY__
__TINY__ equ 1
ENDIF ;NDEF
ENDIF
IF (@Model eq 1) or (@Model eq 2) or (@Model eq 3) ; Tiny, Small, or Compact?
DIST equ NEAR
ELSE
DIST equ FAR
ENDIF
ELSE ;DEF @Model ; else assume TCC/BCC memory-model #defines
IFDEF __TINY__
DIST equ NEAR
ELSEIFDEF __SMALL__
DIST equ NEAR
ELSEIFDEF __COMPACT__
DIST equ NEAR
ELSE
DIST equ FAR
ENDIF
ENDIF
IFNDEF __TINY__
TGROUP@ equ TGROUP
ENDIF
;---------------------------------------------------------------------